package com.tang.plugin.template;

import com.intellij.icons.AllIcons;
import com.intellij.ide.fileTemplates.FileTemplateDescriptor;
import com.intellij.ide.fileTemplates.FileTemplateGroupDescriptor;
import com.intellij.ide.fileTemplates.FileTemplateGroupDescriptorFactory;
import com.intellij.openapi.fileTypes.FileTypeManager;

import javax.swing.*;

public class FileTemplateFactory implements FileTemplateGroupDescriptorFactory {

    @Override
    public FileTemplateGroupDescriptor getFileTemplatesDescriptor() {
        FileTemplateGroupDescriptor descriptor
                = new FileTemplateGroupDescriptor("Module Template Plugin Descriptor", AllIcons.Nodes.Plugin);
        descriptor.addTemplate(getDescriptor("AndroidManifest.xml", getFileIconByExt("xml")));
        descriptor.addTemplate(getDescriptor("ModuleApp.java", getFileIconByExt("java")));
        descriptor.addTemplate(getDescriptor("build.gradle", getFileIconByExt("gradle")));
        descriptor.addTemplate(getDescriptor("ModuleService.java", getFileIconByExt("java")));
        descriptor.addTemplate(getDescriptor("IModuleService.java", getFileIconByExt("java")));
        descriptor.addTemplate(getDescriptor("ModuleManager.java", getFileIconByExt("java")));
        return null;
    }

    private Icon getFileIconByExt(String ext) {
        Icon icon = FileTypeManager.getInstance().getFileTypeByExtension(ext).getIcon();
        if (icon == null) {
            icon = AllIcons.FileTypes.Unknown;
        }
        return icon;
    }

    private FileTemplateDescriptor getDescriptor(String name, Icon icon) {
        return new FileTemplateDescriptor(name, icon);
    }

}
